package {
	import com.adobe.serialization.json.JSON;
	import com.adobe.serialization.json.JSONDecoder;
	import com.adobe.serialization.json.JSONEncoder;
	import com.sina.microblog.MicroBlog;
	import com.sina.microblog.ServiceAPI;
	import com.sina.microblog.events.MicroBlogErrorEvent;
	import com.sina.microblog.events.MicroBlogEvent;
	
	import fl.controls.Button;
	import fl.controls.RadioButton;
	import fl.controls.TextArea;
	
	import flash.display.Bitmap;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	import flash.system.LoaderContext;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	
	import mx.events.Request;

	public class WeiboFlash extends Sprite {
		private var _mb:Object;
		private var access_token:Object;
		private var statuses:Object;
		private var sb:Button;
		// 加载上下文对象
		private var lc:LoaderContext=new LoaderContext(true);
		private var hei:Number;

		public function WeiboFlash() {
			stage.align=StageAlign.TOP_LEFT;
			stage.scaleMode=StageScaleMode.NO_SCALE;

			_mb=new MicroBlog();
			_mb.consumerKey="3666825779"; //申请的App Key
			_mb.consumerSecret="e99852e4790a7c4e31cbb9c0baa23573"; //申请的App Secrect
			_mb.proxyURI="http://weibo.com"; //写你自己部署的代理接口地址
			access_token="2.00cVLsRCRtcJAEe8851971e4ZatjLD";
			sb=new Button();
			sb.addEventListener(MouseEvent.CLICK, btnLogin_clickHandler);
			addChild(sb);
		}

		/**
		 * 登录按钮被点击，调用登录逻辑
		 */
		protected function btnLogin_clickHandler(event:MouseEvent):void {
//			_mb.addEventListener(MicroBlogEvent.LOGIN_RESULT, onLoginResult);
//			_mb.login();
//			testAPI();
			testAPI1();
		}

		private function testAPI1():void {
			_mb.addEventListener("callWeiboApiResult", callWeiboApiResult);
			_mb.addEventListener("callWeiboApiError", callWeiboApiError);

			var url:URLLoader=new URLLoader();
			url.addEventListener(Event.COMPLETE, onComplete);
			var request:URLRequest=new URLRequest();

//			source 	false 	string 	采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
//			access_token 	false 	string 	采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
//			since_id 	false 	int64 	若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0。
//			max_id 	false 	int64 	若指定此参数，则返回ID小于或等于max_id的微博，默认为0。
//			count 	false 	int 	单页返回的记录条数，默认为50。
//			page 	false 	int 	返回结果的页码，默认为1。
//			base_app 	false 	int 	是否只获取当前应用的数据。0为否（所有数据），1为是（仅当前应用），默认为0。
//			feature 	false 	int 	过滤类型ID，0：全部、1：原创、2：图片、3：视频、4：音乐，默认为0。
//			trim_user 	false 	int 	返回值中user字段开关，0：返回完整user字段、1：user字段仅返回user_id，默认为0。 

			request.url="https://api.weibo.com/2/statuses/home_timeline.json?access_token=" + access_token + "&page=1";
			request.method=URLRequestMethod.GET;
			url.load(request);

		}

		protected function onComplete(event:Event):void {
			trace(event.target.data);

			var json:Object=JSON.decode(event.target.data) as Object;
			statuses=json["statuses"];
//			for(var i:Object in statuses) 
//			{
//				trace(statuses[i]["id"]);	
//			}
			
			
			
			trace(statuses[0]["id"]);
			var radio:RadioButton=new RadioButton();
			radio.value=statuses[0]["id"];
			radio.label=statuses[0]["user"]["screen_name"];
			addChild(radio);
			radio.y=sb.y+sb.height+2;
			
			
			var text:TextField=new TextField();
			text.autoSize = TextFieldAutoSize.NONE; //这边要设置成none才行
			text.wordWrap = true; //设置自动换行
			text.multiline = true; //允许多行
			text.width = 500;
			text.text=statuses[0]["text"];
			text.height=text.numLines*20;
			addChild(text);
			text.y=radio.y+radio.height+2;
			
			
			
			
			
			trace(statuses[1]["id"]);
			var radio1:RadioButton=new RadioButton();
			radio1.value=statuses[1]["id"];
			radio1.label=statuses[1]["user"]["screen_name"];
			addChild(radio1);
			radio1.y=text.y+text.height+2;
			
			
			var text1:TextField=new TextField();
			text1.autoSize = TextFieldAutoSize.NONE; //这边要设置成none才行
			text1.wordWrap = true; //设置自动换行
			text1.multiline = true; //允许多行
			text1.width = 500;
			text1.text=statuses[1]["text"];
			text1.height=text1.numLines*20;
			addChild(text1);
			text1.y=radio1.y+radio1.height+2;
			
			var loader:Loader=new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComs);
			loader.load(new URLRequest("http://ww1.sinaimg.cn/large/700544d4jw1dum4ndyadfj.jpg"),lc);
			hei=text1.y+text1.height+2;
			
		}
		
		protected function onComs(event:Event):void
		{
			var bm:Bitmap=event.target.content as Bitmap;
			addChild(event.target.content);
			bm.y=hei;
			
		}
		
		/*
		* 成功登录，获取到access_token，expires_in和refresh_token
		*/
		protected function onLoginResult(e:MicroBlogEvent):void {
			_mb.removeEventListener(MicroBlogEvent.LOGIN_RESULT, onLoginResult);
			trace(e.result["access_token"] + "::" + e.result["expires_in"] + "::" + e.result["refresh_token"]);
			
		}

		/**
		 * 测试通过调用callWeiboAPI通用接口调用开放平台接口：“2/account/get_uid”
		 */
		protected function testAPI():void {
			_mb.addEventListener("callWeiboApiResult", callWeiboApiResult);
			_mb.addEventListener("callWeiboApiError", callWeiboApiError);

//			source 	false 	string 	采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
//			access_token 	false 	string 	采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
//			since_id 	false 	int64 	若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0。
//			max_id 	false 	int64 	若指定此参数，则返回ID小于或等于max_id的微博，默认为0。
//			count 	false 	int 	单页返回的记录条数，默认为50。
//			page 	false 	int 	返回结果的页码，默认为1。
//			base_app 	false 	int 	是否只获取当前应用的数据。0为否（所有数据），1为是（仅当前应用），默认为0。
//			feature 	false 	int 	过滤类型ID，0：全部、1：原创、2：图片、3：视频、4：音乐，默认为0。
//			trim_user 	false 	int 	返回值中user字段开关，0：返回完整user字段、1：user字段仅返回user_id，默认为0。 


			var obj:Object=new Object();
			obj["access_token"]=access_token;
			obj["page"]=1;

			_mb.callWeiboAPI(ServiceAPI.HOME_TIMELINE, obj, "GET", "callWeiboApiResult", "callWeiboApiError");
			//注意，这里使用的callWeiboApiResult和callWeiboApiError字符串代表了两个自定义事件，你也可以使用自己定义的字符串区分各个api的调用。
		}

		/**
		 * 成功调用api
		 */
		private function callWeiboApiResult(e:MicroBlogEvent):void {
			trace(e.result); //按照线上文档返回格式格式： {"uid":"3456676543"}
		}

		/**
		 * 调用api失败，获取服务器返回的错误信息
		 */
		private function callWeiboApiError(e:MicroBlogErrorEvent):void {
			trace(e.message);
		}
	}
}
